//
// Created by mzzmg on 2024/12/13.
//

#ifndef LESSON06TEST04_STORAGE_H
#define LESSON06TEST04_STORAGE_H
// storage.h


#include <time.h>
#include <stdbool.h>

#define MAX_RECORDS 1000

// 数据结构定义
typedef struct
{
    char plate_number[16]; // 车牌号
    time_t entry_time;     // 进入时间
    time_t exit_time;      // 离开时间
    int parking_slot;      // 停车位编号
    double parking_fee;    // 停车费用
    bool is_occupied;      // 是否已使用
} ParkingRecord;

// 接口函数声明
/**
 * 初始化存储模块。
 * 将所有停车记录的占用状态设为未使用。
 */
void init_storage();

/**
 * 添加停车记录。
 * @param plate 车牌号字符串。
 * @param entry_time 车辆进入时间。
 * @param parking_slot 停车位编号。
 * @return 成功返回 0，失败返回 -1。
 */
int add_parking_record(const char *plate, time_t entry_time, int parking_slot);

/**
 * 更新停车记录。
 * @param plate 车牌号字符串。
 * @param exit_time 车辆离开时间。
 * @param parking_fee 停车费用。
 * @return 成功返回 0，失败返回 -1。
 */
int update_parking_record(const char *plate, time_t exit_time, double parking_fee);

/**
 * 显示所有停车记录。
 */
void display_parking_records();

/**
 * 根据车牌号查找停车记录。
 * @param plate 车牌号字符串。
 * @return 如果找到记录，返回指向记录的指针；否则返回 NULL。
 */
ParkingRecord *find_record_by_plate(const char *plate);


#endif //LESSON06TEST04_STORAGE_H
